Digital signal mixing combines two separate digital signals into a single mixed signal having characteristics of both of the separate digital signals. Such mixing techniques are generally known in communications applications. Generally, signal mixing is used in heterodyning. In heterodyning, an input signal having a center frequency and a particular baseband spectrum, is mixed with a locally generated signal to generate a mixed signal. The mixed signal represents the input signal, keeping the same baseband spectrum as the input signal; however, with a different center frequency from the input signal. Shifting the center frequency of a signal allows for specific filtering or sample-rate matching.
A method of digital signal mixing is direct mixing, in which sampled values of an input signal are mixed with values from a sinusoid of a particular frequency. A processor may be used to combine sets of sampled values from the input signal and the sinusoid to generate the mixed signal. The processor performs several calculations to generate each value of the mixed signal. A first set of calculations is performed to generate or obtain values of the sinusoid. A second set of calculations is performed to combine values of the input signal with values of the sinusoid. The calculations may be difficult to implement during real-time signal processing.
The time available to perform signal mixing calculations is limited by the highest rate of the input signal accepted. To be performed real-time, signal-mixing calculations must generally be performed at speeds faster than the rate used to receive values of the input signal. If the calculations take too long to perform, data values from the input signal may be lost. Current methods of digital signal mixing are too processor intensive.
Methods of reducing processor overhead in calculating mixed signals have been attempted. To reduce calculations performed during the generation of the sinusoid, values of a pre-generated sinusoid are stored in a lookup table, eliminating a need to calculate the sinusoid as part of real-time mixing calculations. However, pre-calculating the sinusoid only offers limited success, because the processor must still perform the mixing calculations between the input signal values and the lookup table sinusoid values in real time.
Another limitation of conventional methods of mixing digital signals is that some of the values associated with the sinusoid are floating point values, which further increase computational complexity during mixing operations. To reduce calculation complexity, conventional methods sometimes represent the sinusoid using the values 1, 0, −1, and 0. Mixing operations using the values of 1, 0, −1, and 0 simplify mixing calculations; however the values are not always appropriate because the mixing frequency that is convenient from using the values of 1, 0, −1, and 0 may not be the correct frequency in the desired application. Using the sequence of values of 1, 0, −1, and 0 generates a sinusoid at one quarter of sampling rate used. The forced relationship of one quarter a sampling rate may not be practical as the sampling rate could be fixed due to analog circuit constraints; while, the mixing frequency could be fixed due to external standards bodies. From the above discussion, it should be clear that a less processor intensive method of mixing digital signals is needed.